#ifndef xpack_meta_fit_bits_plus
#define xpack_meta_fit_bits_plus
#pragma push_macro("xuser")
#undef  xuser
#define xuser mixc::meta_fit_bits_plus::inc
#include"define/base_type.hpp"
#include"macro/xexport.hpp"
#include"utils/lexx.hpp"
#pragma pop_macro("xuser")

namespace mixc::meta_fit_bits_plus{
    template<uxx bits_v>
    struct meta{
        static auto invoke(){
            static_assert(bits_v <= 64);

            if constexpr (bits_v <= 8){
                return u08();
            }
            else if constexpr (bits_v <= 16){
                return u16();
            }
            else if constexpr (bits_v <= 24){
                return inc::leu24();
            }
            else if constexpr (bits_v <= 32){
                return u32();
            }
            else if constexpr (bits_v <= 40){
                return inc::leu40();
            }
            else if constexpr (bits_v <= 48){
                return inc::leu48();
            }
            else if constexpr (bits_v <= 48){
                return inc::leu48();
            }
            else if constexpr (bits_v <= 56){
                return inc::leu56();
            }
            else if constexpr (bits_v <= 64){
                return u64();
            }
        }
    };

    template<uxx bits_v>
    using fit_bits_plus = decltype(meta<bits_v>::invoke());
}

#endif

xexport(mixc::meta_fit_bits_plus::fit_bits_plus)